# install.packages("behaviouR") # package ‘behaviouR’ is not available (for R version 4.0.2)
# library(behaviouR)
# not sure if these are needed
#library(ggfortify)
library(ggplot2)
# install.packages("tuneR")
library(tuneR) # Warning: package ‘tuneR’ was built under R version 4.0.5## Warning: package 'tuneR' was built under R version 4.0.5
# install.packages("seewave")
library(seewave) # Warning: package ‘seewave’ was built under R version 4.0.5## Warning: package 'seewave' was built under R version 4.0.5
folder <- getwd()if not already existing
dir.create(file.path("recordings"), showWarnings = FALSE)
dir.create(file.path("data"), showWarnings = FALSE)
dir.create(file.path("output"), showWarnings = FALSE)copy relevant files to data folder
file_list <- Sys.glob('/Volumes/MyPassportForMac/Pictures/!!Nikon-Camera/Nikon-Coolpix-GPS/TestFolder-R-Map-Images/GoldstreamPark/*.wav')
file_list## [1] "/Volumes/MyPassportForMac/Pictures/!!Nikon-Camera/Nikon-Coolpix-GPS/TestFolder-R-Map-Images/GoldstreamPark/2022-02-23-GoldstreamPark-birdsong-AmericanDipper-DSCN0073-mp4.wav"
## [2] "/Volumes/MyPassportForMac/Pictures/!!Nikon-Camera/Nikon-Coolpix-GPS/TestFolder-R-Map-Images/GoldstreamPark/2022-02-23-GoldstreamPark-birdsong-PacificWren-chips-DSCN0171-mp4.wav"
## [3] "/Volumes/MyPassportForMac/Pictures/!!Nikon-Camera/Nikon-Coolpix-GPS/TestFolder-R-Map-Images/GoldstreamPark/DSCN1493-Dark-eyedJunco-2022-03-19-MtFinlayson.mp4.wav"
wav_files <- list.files("./recordings", pattern = "*.wav")
wav_files## [1] "2021-06-04-Eagle-EsquimaltLagoon-DSCN7446.MP4.wav"
## [2] "Anna's Hummingbird-69-2021-04-28-amplify.wav"
## [3] "BaldEagle-BirdNet-EsqLagoon-2022-01-04.wav"
## [4] "BaldEagle-BirdNet-EsqLagoon-2022-02-03-1504-1.wav"
## [5] "DownyWoodpecker-GorgeHarriet-2021-04-1219.wav"
## [6] "DSCN4571-SeymourHill-WhiteCrownedSparrowSong.wav"
## [7] "DSCN5017-esqlagoon-birdsong-White-crownedSparrow.wav"
## [8] "DSCN6126-4-SongSparrow-HarrietSt.wav"
## [9] "DSCN7446.MP4-BaldEagle-EsquimaltLagoon-2021-06-03.wav"
## [10] "DSCN7583-Robin-Singing-FromRooftop.wav"
## [11] "Golden-crowned Sparrow.wav"
## [12] "Golden-crownedSparrow-GorgeHarriet-2021-04-06-152652.wav"
## [13] "PacificWren-BeaconHillPark-2021-03-31.wav"
## [14] "PacificWren-BowkerCreek-2021-09-23.wav"
## [15] "PacificWren-Goldstream-2021-04-08-142748.wav"
## [16] "Ruby-crownedKinglet-UVic-2021-04-08-101007.wav"
## [17] "White-crownedSparrow-GorgeHarriet-2021-04-17-1357.wav"
tuneReagle_wav_2021_06_04 <- readWave("./recordings/2021-06-04-Eagle-EsquimaltLagoon-DSCN7446.MP4.wav")# save(eagle_wav_2021_06_04, file = "./data/eagle_wav_2021_06_04")to see info
eagle_wav_2021_06_04##
## Wave Object
## Number of Samples: 798208
## Duration (seconds): 16.63
## Samplingrate (Hertz): 48000
## Channels (Mono/Stereo): Stereo
## PCM (integer format): FALSE
## Bit (8/16/24/32/64): 32
using seewave
duration(eagle_wav_2021_06_04)## [1] 16.62933
using seewave
oscillo(eagle_wav_2021_06_04)using seewave
oscillo(eagle_wav_2021_06_04, from = 0, to = 2)oscillo(eagle_wav_2021_06_04, from = 0.1, to = 0.2)can’t use behaviouR >> is not available (for R version 4.0.2)
behaviouR::Spectrogram(sound.file = “./recordings/2021-06-04-Eagle-EsquimaltLagoon-DSCN7446.MP4.wav”)
spectro_eagle_wav_2021_06_04 <- spectro(eagle_wav_2021_06_04)spectro_eagle_wav_2021_06_04_zoom <- spectro(eagle_wav_2021_06_04, flim=c(0,6)) # zoom in frequencyspectro_eagle_wav_2021_06_04_osc <- spectro(eagle_wav_2021_06_04, osc = TRUE)spectro_eagle_wav_2021_06_04_zoom_osc <- spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6)) # zoom in frequency# spectro(eagle_wav_2021_06_04) # Registered S3 method overwritten by 'htmlwidgets'Palettes available: reverse.gray.colors.1, reverse.gray.colors.2, reverse.heat.colors, reverse.terrain.colors, reverse.topo.colors, reverse.cm.colors heat.colors, terrain.colors, topo.colors, cm.colors
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6))spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.terrain.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors) # I like this one bestspectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.gray.colors.1)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.gray.colors.2)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.heat.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = heat.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.topo.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = topo.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.cm.colors)spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = reverse.cm.colors, colwave="orchid1")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = cm.colors, colwave="orchid1")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = temp.colors) # I like this one # Save image
jpeg(file = "./output/eagle_wav_2021_06_04_spector.jpeg")
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colgrid="white", colwave="white", colaxis="white", collab="white") # I like this best
dev.off## function (which = dev.cur())
## {
## if (which == 1)
## stop("cannot shut down device 1 (the null device)")
## .External(C_devoff, as.integer(which))
## dev.cur()
## }
## <bytecode: 0x7fc689fba9f8>
## <environment: namespace:grDevices>
png(file="./output/eagle_wav_2021_06_04_spector.png")
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colgrid="white", colwave="white", colaxis="white", collab="white") # I like this best
dev.off## function (which = dev.cur())
## {
## if (which == 1)
## stop("cannot shut down device 1 (the null device)")
## .External(C_devoff, as.integer(which))
## dev.cur()
## }
## <bytecode: 0x7fc689fba9f8>
## <environment: namespace:grDevices>
tiff(file="./output/eagle_wav_2021_06_04_spector.tiff", units="in", width=8, height=8, res=600)
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colgrid="white", colwave="white", colaxis="white", collab="white") # I like this best
dev.off## function (which = dev.cur())
## {
## if (which == 1)
## stop("cannot shut down device 1 (the null device)")
## .External(C_devoff, as.integer(which))
## dev.cur()
## }
## <bytecode: 0x7fc689fba9f8>
## <environment: namespace:grDevices>
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6))spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors)
spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "yellow")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "green")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "palegreen")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "lightgreen")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "springgreen")spectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colwav = "limegreen") # I like this bestspectro(eagle_wav_2021_06_04, osc = TRUE, flim=c(0,6), palette = terrain.colors, colbg = "black", colgrid="white", colwave="white", colaxis="white", collab="white") # I like this best# library(ggplot2)
## first layer
# v <- ggspectro(eagle_wav_2021_06_04, ovlp = 50)
v <- ggspectro(eagle_wav_2021_06_04)
## using geom_tile ##
v + geom_tile(aes(fill = amplitude)) + ylim(0, 6)## Warning: Removed 297769 rows containing missing values (geom_tile).
# black and white theme background
v + geom_tile(aes(fill = amplitude)) +
ylim(0, 6) +
scale_fill_gradientn(name="Amplitude\n(dB)\n", limits=c(-30,0),
na.value="transparent", colours = spectro.colors(30)) +
theme_bw()## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.
## Warning: Removed 297769 rows containing missing values (geom_tile).
v + geom_tile(aes(fill = amplitude)) +
ylim(0, 6) +
scale_fill_gradientn(name="Amplitude\n(dB)\n", limits=c(-30,0),
na.value="transparent", colours = spectro.colors(30)) +
theme(plot.background = element_rect(fill = 'white', colour = 'red'),
panel.background = element_rect(fill = 'black', colour = 'red'))## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.
## Warning: Removed 297769 rows containing missing values (geom_tile).
tuneR# playlist("./recordings/")# player <- setWavPlayer("/Applications/VLC")DON“T USE QUICKTIME >>> locks up R ,”/Applications/‘QuickTime Player.app’/Contents/MacOS/‘QuickTime Player’"
# play("./recordings/2021-06-04-Eagle-EsquimaltLagoon-DSCN7446.MP4.wav")not tested / working yet
#recordings <- get(load(url()))